<?php
/**
 * Created by PhpStorm.
 * User: fengsenhua
 * Date: 2019/1/31
 * Time: 15:11
 */

namespace app\api\validate;


use app\lib\exception\ParameterException;
use think\Exception;
use think\Request;
use think\Validate;

class BaseValidate extends  Validate
{
    //用户自定义的内置规则，用于判断id值是否为正整数
    protected  function  isPositiveInteger($value,$rule='',$data='',$field=''){
        if(is_numeric($value)&&is_int($value+0)&&($value+0)>0){
            return true;
        }else{
            return false;
//            return $field.'必须是正整数';
        }
    }
    protected function isNotEmpty($value,$rule='',$data='',$field=''){
        if(empty($value)){
            return false;
        }else{
            return true;
        }
    }
    public function goCheck(){
        //获取http传入的参数
        //对这些参数进行校验
        //param()什么参数都不填写，默认获取所有的参数
        $request=Request::instance();
        $params=$request->param();
       $result= $this->batch()->check($params);
       if(!$result){
           $e=new ParameterException([
               'msg'=>$this->error,

           ]);
            throw $e;
       }else{
           return true;
       }
    }
    public function getDataByRule($arrays){
        if (array_key_exists('user_id', $arrays) | array_key_exists('uid', $arrays)) {
            // 不允许包含user_id或者uid，防止恶意覆盖user_id外键
            throw new ParameterException([
                'msg' => '参数中包含有非法的参数名user_id或者uid'
            ]);
        }
        $newArray = [];
        foreach ($this->rule as $key => $value) {
            $newArray[$key] = $arrays[$key];
        }
        return $newArray;
    }
    //没有使用TP的正则验证，集中在一处方便以后修改
    //不推荐使用正则，因为复用性太差
    //手机号的验证规则
    protected function isMobile($value)
    {
        $rule = '^1(3|4|5|7|8)[0-9]\d{8}$^';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }
}